#ifndef UTILITARIAS_H_
#define UTILITARIAS_H_

#include "Constantes.h"
#include <string.h>
#include <stdlib.h>
#include <iostream>

using std::string;
using std::cout;
using std::endl;
//  conjunto de funciones auxiliares de manejo de cadenas y chars
class Utilitarias {

public:

	void copiarCadenaYAgregarNullAlFinal(char* char1, char* char2, int sizeCh2) {
		strncpy(char1, char2, sizeCh2);
		char1[sizeCh2] = (int) NULL;
	}
	
		/*  Esta funcion se diferencia de strlen en que determina el fin de la cadena
		 *  cuando encuentra alguno de los caracteres dentro de vectorDeTopes
		 * */
	int getLargoCadena(char* cadena, char* vectorDeTopes, int sizeVec) {
		int contador = 0;
		string cadenaStr(cadena);
		size_t longMenor = 10000000;
		size_t longAux = -1;
		
		while(contador < sizeVec) {
			longAux = cadenaStr.find(vectorDeTopes[contador], 0);
			
			if (longAux < longMenor && longAux != cadenaStr.npos) 
				longMenor = longAux;
			
			contador++;
		}
	
		return longMenor;
	}
	
	/*  datos de atoi:
	 *  "On success, the function returns the converted integral number as an int value.
		If no valid conversion could be performed, a zero value is returned."*/
	bool esNumero(char* c) {
		int integer = atoi(c);
		bool retorno = false;
	
		if (integer == 0) {
			if (*c != '0') retorno = false;
			else retorno = true;
		}
		else retorno = true;
		return retorno;
	}

};

#endif /* UTILITARIAS_H_ */
